package onlineCodingQuiz

import org.springframework.cloud.contract.spec.Contract

Contract.make {
    request {
        method("GET")
        url("/api/v3/onlineCodingQuizzes/ids") {
            queryParameters {
                parameter("page", 1)
                parameter("pageSize", 10)
                parameter("id", 1)
                parameter("status", 2)
            }
        }
    }
    response {
        status(200)
        body("""
        {
                "content":[
                    {
                        "id":1,
                        "description":"description",
                        "evaluateScript":"evaluateScript",
                        "templateRepository":"templateRepository",
                        "makerId":1,
                        "onlineCodingName":"onlineCodingName",
                        "language":"language",
                        "answerPath":"answerPath",
                        "stackId":1,
                        "answerDescription":"answerDescription",
                        "definitionRepo":"definitionRepo",
                        "available":true,
                        "status":2,
                        "buildNumber":1,
                        "quizGroupId":1,
                        "remark":"remark",
                        "tags":["t1","t2"]
                    }
                ],
                "totalElements": 3,
                "totalPages": 1,
                "size": 10,
                "number": 0
            }
        """)
        bodyMatchers {
            jsonPath('$.content[*].id', byRegex(number()))
            jsonPath('$.content[*].description', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].evaluateScript', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].templateRepository', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].makerId', byRegex(number()))
            jsonPath('$.content[*].onlineCodingName', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].language', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].answerPath', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].stackId', byRegex(number()))
            jsonPath('$.content[*].answerDescription', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].definitionRepo', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].available', byRegex(anyBoolean()))
            jsonPath('$.content[*].status', byRegex(number()))
            jsonPath('$.content[*].buildNumber', byRegex(number()))
            jsonPath('$.content[*].quizGroupId', byRegex(number()))
            jsonPath('$.content[*].remark', byRegex("[\\s\\S]+"))
            jsonPath('$.content[*].tags', byRegex("[\\s\\S]+"))
            jsonPath('$.totalElements', byRegex(number()))
            jsonPath('$.totalPages', byRegex(number()))
            jsonPath('$.size', byRegex(number()))
            jsonPath('$.number', byRegex(number()))
        }
        headers {
            contentType(applicationJsonUtf8())
        }
    }
}
